// 封装性推荐做法：属性全部使用private（只能自己访问），根据情况给予public|protected的访问器或设置器。
// 方法根据情况使用public|protected
class Human {

    private name:string;  

    private age:number;
    
    private assets:number;

    constructor(name:string) {
        this.name = name;
    }

    public getName():string {
        return this.name;
    }

    public setAge(age:number) {
        this.age = age;
    }

    public getAge():number {
        return this.age;
    }

    protected getAssets():number {
        return this.assets;
    }

    protected setAssets(assets:number) {
        return this.assets = assets;
    }

    public show() {
        console.log(`姓名：${this.getName()}，年龄：${this.getAge()}，财产：${this.getAssets()}`)
    }
}

class Son extends Human {
    constructor(name:string,assets:number) {
        super(name + "的儿子");
        this.setAssets(assets);
    }
}


let lbj = new Human("罗佰君");
lbj.setAge(28);
lbj.show();

let son = new Son("罗佰君",100);
son.show();
// 修饰符   自己    继承后代    所有
// private:可   不可    不可
// protected：可    可  不可
// public：可   可  可
